Озвучиваем план лекции. Обратите внимание студентов на последовательность: от базовых понятий к конкретным архитектурам и современным тенденциям развития ОС.
Вводим ключевое определение архитектуры ОС. Подчеркнуть, что архитектура — это не просто набор компонентов, а способ их взаимодействия, напрямую влияющий на производительность, надёжность и безопасность.
Объясняем принцип многоуровневой организации. Каждый слой — это контракт: он предоставляет сервисы верхнему уровню и использует сервисы нижнего. Аналогия с этажами здания.
Перечисляем уровни снизу вверх. Важно подчеркнуть привилегированность уровня ядра — это фундамент безопасности системы. Ядро — единственный слой с прямым доступом к оборудованию.
Разбираем каждое преимущество на конкретном примере. Упрощение разработки: программисту не нужно знать, как работает жёсткий диск. Переносимость: при смене процессора меняется только нижний уровень.
Каждый пример иллюстрирует, как абстракция скрывает сложность. Можно спросить студентов: «Что произойдёт, если убрать абстракцию файловой системы?» — приложение будет работать напрямую с блоками на диске.
Исторически первая архитектура. Все компоненты работают в одном адресном пространстве — это и сила (скорость), и слабость (уязвимость) подхода. Примеры: ранние UNIX, MS-DOS.
Подчеркните компромисс: производительность versus надёжность. Приведите пример: ошибка в драйвере принтера может привести к «синему экрану смерти», потому что драйвер работает в пространстве ядра.
Эволюция монолитного подхода. Модули загружаются динамически — это как плагины, но в ядре. Пример: загрузка драйвера Wi-Fi без перекомпиляции ядра Linux.
Обратите внимание: модули работают всё ещё в пространстве ядра. Это компромисс между монолитной и микроядерной архитектурами — гибкость без потери производительности.
Ключевая идея — минимизировать код, работающий в привилегированном режиме. Ядро отвечает только за минимум: память, процессы, IPC. Всё остальное — серверы в пользовательском пространстве.
Три кита микроядра: минимальность, модульность, расширяемость. Ядро делегирует максимум функциональности серверам. Новые функции не требуют модификации ядра.
Главный компромисс — производительность. IPC-сообщения медленнее прямых вызовов функций. Спросите студентов: в каких сценариях это критично? Подсказка: высоконагруженные серверы, системы реального времени.
Сводная таблица — удобный способ систематизировать знания. Рекомендуйте студентам запомнить ключевые различия. Обратите внимание: чистые архитектуры встречаются редко, большинство ОС гибридные.
QNX — пример успешного промышленного применения микроядра. MINIX — учебная ОС Таненбаума. Можно упомянуть знаменитый спор Таненбаума и Торвальдса 1992 года о микроядре vs монолитном ядре.
Начинаем раздел классификации ОС. CLI и GUI — два подхода, каждый со своими преимуществами. Кооперативная vs вытесняющая многозадачность — важное различие для понимания надёжности системы.
Обратите внимание на гибридные ядра — macOS (XNU) и Windows NT сочетают подходы монолитного и микроядра. Чистые архитектуры в современных ОС практически не встречаются.
Linux — пример открытой модульной архитектуры с огромным сообществом. macOS — гибрид на базе BSD (Darwin/XNU). Обе системы следуют стандартам POSIX, что обеспечивает совместимость.
Windows доминирует на десктопах благодаря экосистеме ПО и обратной совместимости. RTOS — отдельный класс: главная цель — гарантированное время отклика, а не максимальная производительность.
Android и iOS — две доминирующие мобильные ОС. Обе базируются на Unix-подобных ядрах (Linux и Darwin), но с разной философией: открытость Android vs закрытая экосистема Apple.
Сетевая ОС — это не отдельный класс, а надстройка над базовой ОС. Любая современная ОС имеет сетевые возможности. Ключевой признак NOS — встроенные службы для управления сетевыми ресурсами.
Ключевое различие: в сетевой ОС пользователь видит границу между машинами, в распределённой — нет. Распределённая ОС создаёт иллюзию единого компьютера из множества узлов.
Прозрачность — главный принцип. Пользователь не должен знать, где физически выполняется его задача. Приведите пример: распределённая файловая система NFS — файлы выглядят как локальные.
Облака изменили роль ОС: от управления железом к управлению виртуальными ресурсами. Виртуализация стала ключевой технологией — одна физическая машина обслуживает десятки виртуальных.
Сравните подходы: виртуальная машина включает собственную ОС (тяжело), контейнер разделяет ядро хоста (легко). Docker и Kubernetes — стандарты индустрии для развёртывания приложений.
IoT-устройства ограничены в ресурсах — им нужны специализированные ОС. Спросите студентов: какие IoT-устройства они используют ежедневно? Умные часы, роутеры, бытовая техника — всё это работает под управлением ОС.
Безопасность — не отдельная функция, а сквозная характеристика ОС. Каждая архитектура имеет свои уязвимости: монолитное ядро — больший код в привилегированном режиме, микроядро — больше IPC-каналов для атаки.
Подводим итоги лекции. Подчеркните: нет идеальной архитектуры — есть компромиссы для конкретных задач. Выбор архитектуры определяется требованиями к производительности, надёжности и масштабируемости.
Резюмируем главные тезисы. Студенты должны понимать эволюцию: монолит → модули → микроядро → гибридные подходы. Каждая ступень решала проблемы предыдущей.
Рекомендуйте студентам ответить на вопросы самостоятельно после лекции. Хороший способ проверить глубину понимания. Вопросы 4 и 5 — ключевые, их стоит разобрать подробнее.
Таненбаум — основной учебник, обязательно к прочтению. Столлингс — хорошее дополнение с другим подходом к изложению материала. Главы об архитектурах ядер — к домашней проработке.